<?xml version="1.0"?>
<component name="org.nuxeo.ecm.diff.widgets.contrib.override">

  <require>org.nuxeo.ecm.diff.widgets.contrib</require>

  <extension point="widgets" target="org.nuxeo.ecm.platform.forms.layout.LayoutStore">

    <!-- Generic widgets: name = diff property type, see: org.nuxeo.ecm.diff.model.PropertyType -->
    <widget name="string" type="template">
      <categories>
        <category>diff</category>
      </categories>
      <properties mode="any">
        <property name="widgetType">text</property>
        <property name="template">
          /widgets/generic_diff_widget_template.xhtml
        </property>
      </properties>
    </widget>

    <widget name="boolean" type="template">
      <categories>
        <category>diff</category>
      </categories>
      <properties mode="any">
        <property name="widgetType">checkbox</property>
        <property name="template">
          /widgets/generic_diff_widget_template.xhtml
        </property>
      </properties>
    </widget>

    <widget name="date" type="template">
      <categories>
        <category>diff</category>
      </categories>
      <properties mode="any">
        <property name="widgetType">datetime</property>
        <property name="template">
          /widgets/generic_diff_widget_template.xhtml
        </property>
      </properties>
    </widget>

    <widget name="integer" type="template">
      <categories>
        <category>diff</category>
      </categories>
      <properties mode="any">
        <property name="widgetType">int</property>
        <property name="template">
          /widgets/generic_diff_widget_template.xhtml
        </property>
      </properties>
    </widget>

    <widget name="long" type="template">
      <categories>
        <category>diff</category>
      </categories>
      <properties mode="any">
        <property name="widgetType">int</property>
        <property name="template">
          /widgets/generic_diff_widget_template.xhtml
        </property>
      </properties>
    </widget>

    <widget name="double" type="template">
      <categories>
        <category>diff</category>
      </categories>
      <properties mode="any">
        <property name="widgetType">double</property>
        <property name="template">
          /widgets/generic_diff_widget_template.xhtml
        </property>
      </properties>
    </widget>

    <widget name="content" type="file">
      <categories>
        <category>diff</category>
      </categories>
    </widget>

    <widget name="complex" type="template">
      <categories>
        <category>diff</category>
      </categories>
      <properties mode="any">
        <property name="display">inline</property>
        <property name="template">
          /widgets/complex_diff_widget_template.xhtml
        </property>
      </properties>
    </widget>

    <widget name="scalarList" type="template">
      <categories>
        <category>diff</category>
      </categories>
      <properties mode="any">
        <property name="display">inline</property>
        <property name="displayAllItems">false</property>
        <property name="displayItemIndexes">true</property>
        <property name="template">
          /widgets/list_diff_widget_template.xhtml
        </property>
      </properties>
    </widget>

    <widget name="contentList" type="template">
      <categories>
        <category>diff</category>
      </categories>
      <properties mode="any">
        <property name="display">inline</property>
        <property name="displayAllItems">false</property>
        <property name="displayItemIndexes">true</property>
        <property name="template">
          /widgets/list_diff_widget_template.xhtml
        </property>
      </properties>
    </widget>

    <widget name="complexList" type="list">
      <categories>
        <category>diff</category>
      </categories>
      <properties mode="any">
        <property name="display">inline</property>
        <property name="displayAllItems">false</property>
        <property name="displayItemIndexes">true</property>
        <property name="template">
          /widgets/list_diff_widget_template.xhtml
        </property>
      </properties>
    </widget>

    <widget name="contentDiffLinks" type="template">
      <categories>
        <category>diff</category>
      </categories>
      <properties mode="any">
        <property name="template">
          /widgets/content_diff_links_widget_template.xhtml
        </property>
      </properties>
    </widget>

    <!-- Specific widgets: name = property xpath -->
    <widget name="dublincore:created" type="datetime">
      <categories>
        <category>diff</category>
      </categories>
      <labels>
        <label mode="any">label.dublincore.created</label>
      </labels>
      <translated>true</translated>
      <properties widgetMode="any">
        <property name="pattern">#{nxu:basicDateAndTimeFormatter()}
        </property>
      </properties>
    </widget>

    <widget name="dublincore:modified" type="datetime">
      <categories>
        <category>diff</category>
      </categories>
      <labels>
        <label mode="any">label.dublincore.modified</label>
      </labels>
      <translated>true</translated>
      <properties widgetMode="any">
        <property name="pattern">#{nxu:basicDateAndTimeFormatter()}
        </property>
      </properties>
    </widget>

    <widget name="dublincore:issued" type="datetime">
      <categories>
        <category>diff</category>
      </categories>
      <labels>
        <label mode="any">label.dublincore.issueDate</label>
      </labels>
      <translated>true</translated>
      <properties widgetMode="any">
        <property name="pattern">#{nxu:basicDateAndTimeFormatter()}
        </property>
      </properties>
    </widget>

    <widget name="dublincore:valid" type="datetime">
      <categories>
        <category>diff</category>
      </categories>
      <labels>
        <label mode="any">label.dublincore.validationDate</label>
      </labels>
      <translated>true</translated>
      <properties widgetMode="any">
        <property name="pattern">#{nxu:basicDateAndTimeFormatter()}
        </property>
      </properties>
    </widget>

    <widget name="dublincore:expired" type="datetime">
      <categories>
        <category>diff</category>
      </categories>
      <labels>
        <label mode="any">label.dublincore.expired</label>
      </labels>
      <translated>true</translated>
      <properties widgetMode="any">
        <property name="pattern">#{nxu:basicDateAndTimeFormatter()}
        </property>
      </properties>
    </widget>

    <widget name="note:note" type="richtext_with_mimetype">
      <categories>
        <category>diff</category>
      </categories>
      <labels>
        <label mode="any">label.note.note</label>
      </labels>
      <translated>true</translated>
      <properties mode="any">
        <property name="translatedHtml">
          #{noteActions.translateImageLinks(field_0)}
        </property>
        <property name="cssClass">note_content_block</property>
      </properties>
    </widget>

    <widget name="file:content" type="file">
      <categories>
        <category>diff</category>
      </categories>
      <labels>
        <label mode="any">label.summary.download.file</label>
      </labels>
      <translated>true</translated>
    </widget>

    <widget name="files:files" type="list">
      <categories>
        <category>diff</category>
      </categories>
      <labels>
        <label mode="any">label.summary.download.attachments</label>
      </labels>
      <translated>true</translated>
      <properties mode="any">
        <property name="display">inline</property>
        <property name="displayAllItems">false</property>
        <property name="displayItemIndexes">true</property>
        <property name="template">
          /widgets/list_diff_widget_template.xhtml
        </property>
      </properties>
    </widget>

    <widget name="dublincore:nature" type="selectOneDirectory">
      <categories>
        <category>diff</category>
      </categories>
      <labels>
        <label mode="any">label.dublincore.nature</label>
      </labels>
      <translated>true</translated>
      <properties mode="any">
        <property name="directoryName">nature</property>
        <property name="localize">true</property>
        <property name="ordering">ordering,label</property>
      </properties>
    </widget>

    <widget name="dublincore:subjects/item" type="template">
      <categories>
        <category>diff</category>
      </categories>
      <labels>
        <label mode="any">label.dublincore.subjects.item</label>
      </labels>
      <translated>true</translated>
      <properties mode="any">
        <property name="template">/widgets/subjects_item_widget_template.xhtml
        </property>
      </properties>
    </widget>

    <widget name="dublincore:coverage" type="template">
      <categories>
        <category>diff</category>
      </categories>
      <labels>
        <label mode="any">label.dublincore.coverage</label>
      </labels>
      <translated>true</translated>
      <properties mode="any">
        <property name="template">/widgets/coverage_widget.xhtml
        </property>
      </properties>
    </widget>

    <widget name="dublincore:contributors/item" type="template">
      <categories>
        <category>diff</category>
      </categories>
      <labels>
        <label mode="any">label.dublincore.contributors.item</label>
      </labels>
      <translated>true</translated>
      <properties mode="any">
        <property name="template">/widgets/contributors_item_widget_template.xhtml
        </property>
      </properties>
    </widget>

    <widget name="dublincore:lastContributor" type="template">
      <categories>
        <category>diff</category>
      </categories>
      <labels>
        <label mode="any">label.dublincore.lastContributor</label>
      </labels>
      <translated>true</translated>
      <properties mode="any">
        <property name="template">
          /widgets/single_user_widget_template.xhtml
        </property>
      </properties>
    </widget>

  </extension>

</component>
